/*
 * $Id: WelcomeAction.java,v 1.1 2007/03/21 08:55:14 Luigi Exp $ 
 *
 * Copyright 2000-2004 Apache Software Foundation
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.videoshare.user;

import java.sql.Connection;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.util.MessageResources;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.Action;
import org.apache.commons.logging.*;
import com.sapientia.user.dao.*;

/**
 * <p>
 * Confirm required resources are available. If a resource is missing,
 * forward to "failure". Otherwise, forward to "success", where
 * success is usually the "welcome" page.
 * </p>
 * <p>
 * Since "required resources" includes the application MessageResources
 * the failure page must not use the standard error or message tags.
 * Instead, it display the Strings stored in an ArrayList stored under
 * the request attribute "ERROR".fuckoff
 * </p>
 *
 * @version $Rev: 54929 $ $Date: 2007/03/21 08:55:14 $
 */
public final class WelcomeAction extends Action 
{

    // --------------------------------------------------------- Public Methods

         // See superclass for Javadoc
    public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response)
        throws Exception {

        // Setup message array in case there are errors
        ArrayList messages = new ArrayList();

        // Confirm message resources loaded
        MessageResources resources = getResources(request);
        if (resources == null) {
            messages.add(UserConstants.MESSAGE_RESOURCES_NOT_LOADED);
        }

        // Confirm user database connection
        Connection conn = null;
		DAOFactory factory;
		UserDAO dao = null;
		boolean userDatabaseConnectionAvailable = false;
		try{
			conn = getDataSource(request,"userDB").getConnection();
			factory = new DAOFactory();
			dao = factory.createUserDAO(conn);
			if (dao != null)
				userDatabaseConnectionAvailable = true;
		}
		finally{
			try{
				conn.close();
			}
			catch(Exception e)
			{
				e.toString();
			}
		}
		
        if (!userDatabaseConnectionAvailable) {
            messages.add(UserConstants.USER_DATABASE_NOT_CONNECTED);
        }
        
        // Confirm data model loaded

        
        
        // If there were errors, forward to our failure page
        if (messages.size()>0) {
            request.setAttribute(UserConstants.ERROR_KEY,messages);
            return (mapping.findForward("failure"));

        }
        
        // Forward to our success page
        return (mapping.findForward("success"));

    }

}
